package com.m1.tzolkin.model;

import java.io.Serializable;

import com.m1.tzolkin.model.util.ITurnsCounter;

/**
 * Un mod�le de calendrier Tzolk'in.
 * Un calendrier Tzolk'in est un calendrier poss�dant
 *  un certain nombre de jours de festin pour chaque saison.
 * Si un jour est un jour de festin pour deux saisons diff�rentes,
 *  la saison retourn�e par feedingDay() est ind�finie.
 * Chaque jour, le calendrier peut accumuler 1 ma�s.
 *     
 * @cons <pre>
 * $DESC$
 *     Un calendrier initialis� au jour O avec n jours maximum
 *      et les jours de festin f.
 * $ARGS$
 *     int n, Map<Season, Integer[]> f
 * $PRE$
 *     n > 0
 * $POST$
 *     getDay() == 0
 *     getLastDay() == n
 *     getCorn() == 0 </pre>
 */
public interface ITZCalendar extends ITurnsCounter, Serializable {

	// REQUETES
	
	/**
	 * Retourne la saison concern�e si le jour actuel est un jour de festin, null sinon.
	 */
	Season feedingDay();
	
	/**
	 * Retourne la quantit� de ma�s accumul�e.
	 */
	int getCorn();
	
	// COMMANDES
	
	/**
	 * Retire tout le ma�s accumul�.
	 */
	void emptyCorn();
	
	/**
	 * Ajoute 1 ma�s sur le calendrier.
	 */
	void addCorn();
	
}
